home *** CD-ROM | disk | FTP | other *** search
/ Young Minds / Young Minds Interactive CD-ROM.ISO / spacewar / objupdat.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-05-31  |  1.2 KB  |  62 lines

  1. /*
  2.  * Spacewar - update universe orbiting objects to external file
  3.  *
  4.  * Copyright 1985 obo Systems, Inc.
  5.  * Copyright 1985 Dan Rosenblatt
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include "spacewar.h"
  10. #include "universe.h"
  11. #include "obj.h"
  12.  
  13. VOID objupdate()
  14. {
  15.     char buf[128];
  16.     FILE *fobj;
  17.     register struct obj *p=objlst;
  18.  
  19. #ifdef DEBUG
  20.     DBG("objupdate()\n");
  21. #endif
  22.  
  23.     /* write to secondary file to be renamed */
  24.     strcpy(buf,SWOBJ);
  25. #ifndef VMS
  26.     strcat(buf,"x");
  27. #endif
  28.     if (!(fobj = fopen(buf,"w"))) {
  29.         perror(buf);
  30. #ifdef DEBUG
  31.         VDBG("objupdate return\n");
  32. #endif
  33.         return;
  34.     }
  35.  
  36.     /* write the exact number of objects */
  37.     for (p=objlst;p < objlst+MAXOBJ;++p)
  38.         fprintf(fobj,"%ld\t%d\t%c\t%d\t%d\t%ld\t%.5f\t%.1f\t%.1f\t%.1f\n",
  39.         p->oj_mass,p->oj_rad,(p->oj_rep == ' ') ? '.' : p->oj_rep,
  40.         p->oj_octr.ip_ptr-univlst,p->oj_oprd,p->oj_orad,p->oj_ocrpt,
  41.         p->oj_optx,p->oj_opty,p->oj_optz);
  42.  
  43.     if (ferror(fobj) || fclose(fobj)) {
  44.         perror(buf);
  45. #ifdef DEBUG
  46.         VDBG("objupdate return\n");
  47. #endif
  48.         return;
  49.     }
  50.  
  51. #ifndef VMS
  52.     /* rename secondary file to be primary */
  53.     if (unlink(SWOBJ) || link(buf,SWOBJ) || unlink(buf)) {
  54.         perror(buf);
  55.     }
  56. #endif
  57.  
  58. #ifdef DEBUG
  59.     VDBG("objupdate return\n");
  60. #endif
  61. }
  62.